<?php

//读取用户上传的头像文件
$a = array();
if($_FILES['pic']['error'] == 4 ) {
    $a['code'] = -1;
    $a['errMsg'] = '头像必须上传';
    echo json_encode($a);
    exit;
}
if($_FILES['pic']['error'] != 0 ) {
    $a['code'] = -1;
    $a['errMsg'] = '头像上传出错';
    echo json_encode($a);
    exit;
}
$fileName = $_FILES['pic']['name'];
$fileArray = explode(".",$fileName);
$ext = strtolower(end($fileArray));
$allowExt = array('jpg','jpeg','gif','png');
if(in_array($ext,$allowExt)){
    $filename = uniqid('', true) .".". $ext;
    if(move_uploaded_file($_FILES['pic']['tmp_name'],'./pic/'.$filename)){
        register($filename);
    }
    else {
        $a['code'] = -1;
        $a['errMsg'] = '头像上传出错';
        echo json_encode($a);
        exit;
    }
}
else{
    $a['code'] = -1;
    $a['errMsg'] = '头像只支持' . implode('、',$allowExt) . '文件';
    echo json_encode($a);
    exit;
}
function register($filename){
    $username = trim($_POST['username']);   //数字下标，索引数组。非数字下标（字符串下标），关联数组
    $pw = trim($_POST['pw']); //变量命名规则：只能由字母、数字、下划线构成。且不能由数字开头。
    $cpw = trim($_POST['cpw']);
    $email = trim($_POST['email']);
    //对数据进行必要的验证
    if(!preg_match('/^[a-zA-Z\d]{3,10}$/',$username)){
        //preg_match如果匹配到字符串，则返回1，否则返回0
        $a['code'] = -1;
        $a['errMsg'] = '用户名必填，且只能由大小写字符和（或）数字构成，且长度在3到10个字符之间';
        echo json_encode($a);
        exit;
    }
    if(!preg_match('/^[a-zA-Z\d_*]{6,10}$/',$pw)){
        //preg_match如果匹配到字符串，则返回1，否则返回0
        $a['code'] = -1;
        $a['errMsg'] = '密码必填，且只能由大小写字符和（或）数字，以及_、*构成，且长度在6到10个字符之间';
        echo json_encode($a);
        exit;
    }
    if($cpw !== $pw){
        $a['code'] = -1;
        $a['errMsg'] = '确认密码和密码必须相同。';
        echo json_encode($a);
        exit;
    }
    if(!empty($email)){
        if(!preg_match('/^[a-zA-Z\d_\-]+@([a-zA-Z\d]+\.)+(com|cn|net|org)$/',$email)){
            //preg_match如果匹配到字符串，则返回1，否则返回0
            $a['code'] = -1;
            $a['errMsg'] = '信箱格式不对。';
            echo json_encode($a);
            exit;
        }
    }
//接下来，连接数据库，并将数据写入数据库
    include_once ('conn.php');
//第三步，设置查询语句（将前端表单数据写入数据表）

//检查当前用户名是否被占用。我们要求用户中必须唯一。如果被占用，则给出警告提示，并返回上一个页面，要求用户重新输入新的用户名。

    $sql = "select username from userinfo where username = '$username'";
    $result = mysqli_query($conn,$sql);
//接下来判断一下$result中是否有记录
    if(mysqli_num_rows($result)){//返回结果可能是0，1。
        //说明数据表中已经有此用户名
        $a['code'] = -1;
        $a['errMsg'] = '此用户名已经被占用。';
        echo json_encode($a);
        exit;
    }
    $sql = "insert into userinfo (username,pw,email,pic) values ('$username','" . md5($pw). "','$email','$filename')";
//第四步，执行查询
    $result = mysqli_query($conn,$sql);
    if($result){
        $a['code'] = 1;
    }
    else{
        $a['code'] = -1;
        $a['errMsg'] = '用户注册失败。';
        $a['sql'] = $sql;
        $a['msg'] = mysqli_error($conn);
    }
    echo json_encode($a);
}